/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores.Action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
//import java.sql.*;
import AccesoBaseDatos.GatewayProfesor;
//import java.util.Hashtable;
/**
 *
 * @author Franklin
 */
public class InsertarNuevoProfesorAction extends org.apache.struts.action.Action {

   /* tenemos una instacia del formbean para sacar los datos */
   private Controladores.Form.InsertarNuevoProfesorForm formulario;
   //esto son unas etiquetas que me sirven para redireccionar la pagina en la evaluacion de campos
   private final static String SUCCESS = "success";
   private final static String FAILURE = "failure";
   private final static String FALLACONEXION = "fallaConexion";
   
   /*//esta basura es para la conexion de la base de datos
   static String bd = "Bitacora";
   static String login = "root";
   static String password = "";
   private String url = "jdbc:mysql://localhost/"+bd;
   private Statement stm = null; 
   private Connection conn = null;*/
   ActionForward retorno;
   
   //atributos
   private String nombre ="";
   private String cedula = "";
   private String nacionalidad = "";
   private String telefono = "";
   private String direccion ="";
    /**
     * 
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //Obtengo el Formulario del bean
        formulario=(Controladores.Form.InsertarNuevoProfesorForm) form;
        nombre = formulario.getNombre();
        cedula = formulario.getCedula();
        nacionalidad = formulario.getNacionalidad();
        telefono = formulario.getTelefono();
        direccion = formulario.getDireccion();
        //guarda la pagina para la que se va a redireccionar
        retorno = new ActionForward();
        boolean exito = false;
        if(comprobarCedula(cedula)){//cedula.equals("")
            //Seteo el error
            ActionErrors errors = new ActionErrors();
            errors.add("Problema", new ActionMessage("errors.cedula"));
            //almaceno el error
            saveErrors(request, errors);
            retorno = mapping.findForward(FAILURE);       
        }else{//crea la conexion
           GatewayProfesor gatewayProf = new GatewayProfesor();
           if(gatewayProf.VerificarExistencia(cedula)){//actualizar
               exito = gatewayProf.UpdateProfesor(nombre, cedula, nacionalidad, telefono, direccion);
           }else{//insertar
               exito = gatewayProf.InsertarProfesor(nombre, cedula, nacionalidad, telefono, direccion);
           }
           if(exito == true){
                   retorno = mapping.findForward(SUCCESS);
           }else{
                   retorno = mapping.findForward(FALLACONEXION);
           } 
        }
        return retorno;//devuelve el lugar donde se debe devolver el control
    }//fin del metodo
    
    public boolean comprobarCedula(String cedula){
        boolean correcto = true;
        if(cedula.equals("")||cedula.length()!=11||cedula.charAt(1)!='-'||cedula.charAt(6)!='-'){
            correcto=true;
        }else{  
            String uno = cedula.substring(0, 1);
            String dos = cedula.substring(2, 6);
            String tres = cedula.substring(7,10);
            try{
                int p1 = Integer.parseInt(uno);
                int p2 = Integer.parseInt(dos);
                int p3 = Integer.parseInt(tres);
                correcto = false;
            }catch(NumberFormatException e){
                correcto = true;
            }catch(Exception q){
                correcto = true;
            }
        }
        return correcto;
    }
    
    
    
}//fin clase
